package model;

import java.util.TreeSet;
import datalayer.abstractFactory.DAOFactory;

public class Bedrijf implements Comparable<Bedrijf>{
	
	/*
	 * Variables
	 */
	private String Filiaal;
	private String Naam;
	private TreeSet<Afdeling> afdelingslijst = new TreeSet<Afdeling>();
	/*
	 * Constructor using fields
	 */
	public Bedrijf(){
		
	}
	
	public Bedrijf(String filiaal, String naam) {
		Filiaal = filiaal;
		Naam = naam;
	}
	
	/*
	 * Methodes
	 */
	
	/*
	 * Dit is op het moment niet nodig
	 */
	public boolean addAfdelingen(Afdeling afdeling){
		DAOFactory.getFactory().GetDAOAfdeling().insert(afdeling);
		return afdelingslijst.add(afdeling);
	}
	
	public TreeSet<Afdeling> getAfdelingen(){
		DAOFactory.getFactory().GetDAOAfdeling().loadAll();
		return afdelingslijst;
	}
	
	public Afdeling getafdeling(Afdeling afdeling){
		return DAOFactory.getFactory().GetDAOAfdeling().load(afdeling);
	}
	
	@Override
	public String toString() {
		return "Bedrijf [Filiaal=" + Filiaal + ", Naam=" + Naam + "]";
	}
	
	

	@Override
	public int hashCode() {
		
		return Filiaal.hashCode() + Naam.hashCode();
	}

	@Override
	public boolean equals(Object obj) {
		Bedrijf b = (Bedrijf)obj;
		if(Filiaal.equalsIgnoreCase(b.getFiliaal()) && Naam.equalsIgnoreCase(b.getNaam())){
			return true;
		}
		else{
			return false;
		}
	}
	
	@Override
	public int compareTo(Bedrijf o) {
		int fgetal = Filiaal.compareTo(o.getFiliaal());
		int ngetal = Naam.compareTo(o.getNaam());
		
		if(fgetal == 0){
			if(ngetal == 0){
				return 0;
			}
			else{
				return ngetal;
			}
		}
		else{
			return fgetal;
		}
	}

	/*
	 * Getters / Setters
	 */
	public String getFiliaal() {
		return Filiaal;
	}

	public void setFiliaal(String filiaal) {
		Filiaal = filiaal;
	}

	public String getNaam() {
		return Naam;
	}

	public void setNaam(String naam) {
		Naam = naam;
	}
}
